package org.totoro.patterns.behavior.strategy;

/**
 * 策略模式
 * <p>
 * <p>
 * 策略模式属于行为性模式，它定义一系列的算法对象,使用时候可以使它们相互替换。
 *
 * <pre>
 *     <img src="策略模式.png" >
 * </pre>
 *
 * <pre>
 *      从图知道：接口InstantiationStrategy是实例化策略接口类，它定义了三个实例化接口，
 *      然后SimpleInstantiationStrategy实现了该策略，
 *      它主要做一些简单的根据构造函数实例号bean的工作，
 *      然后CglibSubclassingInstantiationStrategy 又继承了SimpleInstantiationStrategy
 *      新增了方法注入方式根据cglib生成代理类实例化方法。
 *
 *      在AbstractAutowireCapableBeanFactory中管理了该策略的一个对象，
 *      默认是CglibSubclassingInstantiationStrategy策略，运行时候可以
 *      通过setInstantiationStrategy改变实例化策略，如果你自己写个个策略的话。
 * <pre>
 */

public class Client {

    /**
     * @param args
     */

    public static void main(String[] args) {

        Calculate multi = new Multi();

        System.out.println(multi.caculate("2*8"));

        Calculate minus = new Minus();

        System.out.println(minus.caculate("2-8"));

        Calculate plus = new Plus();

        System.out.println(plus.caculate("2+8"));

    }
}
